package com.itfenghuang.day08;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class A03_IO流 {
    public static void main(String[] args) throws IOException {

        /**
         *
         *  1.概念
         *   I  input  输入  将文件中的数据输入到内存中(程序)
         *   o  output  输出  将程序中的数据写入到文件里面
         *    File  创建或删除文件和文件夹  操作文件/文件夹
         *    IO流:  操作文件中的数据的  读,写
         *
         *    数据传输的过程中,谁在读,谁在写,取的参照物
         *      以内存作为参照物进行读写操作
         *      读是输入,写是输出
         *  2.IO流分类
         *      按照数据的流向分
         *          输入类:    硬盘到内存
         *          输出类:    内存到硬盘
         *      按照数据类型分类
         *          字节流:
         *              字节输入流
         *              字节输出流
         *          字符流:
         *              字符输入流
         *              字符输出流
         *  3. IO流的作用
         *      纯文本文件: txt  优先使用字符流
         *      图片,视频,音频: 优先使用字节流
         *         如果不能够确定文件类型,使用字节流(被称为万能流)
         *
         *  4. 字节输出流的实现步骤
         *          1.创建 字节输出流对象  FileOutputStream
         *          2.调用写出方法向文件中写出数据
         *          3.关闭流 (释放资源)
         *
         *    注意:
         *         如果文件不存在,会帮我们创建,然后再将数据写入文件
         *         文件中有内容会被覆盖
         * 5.换行
         *  Windows \r\n
         *  macOS   \r
         *  Linux   \n
         *
         */
        method();
        method1();
        //一次写出一个字节数据的一部分
//        byte[] bys={97,98,99,100};
        //public void write(byte[] b, int off , int len)
        //参数 : b  数组  off: 偏移量,从哪个索引开始  len: 元素的个数
//        FileOutputStream fos = new FileOutputStream("D:\\it\\a.txt");
//        fos.write(bys,0,bys.length);
        //写出一个换行符
        //public byte[] getBytes()
        // String 中的方法,返回一个由该字符串转成的字节数组
//        fos.write("\r\n".getBytes());
//        fos.write(bys,2,2);
        //释放资源
//        fos.close();

    }

    private static void method1() throws IOException {
        //一次写出一个字节数据
        //public void write(byte[] b) 一次写出一个字节数组的方法
        FileOutputStream fos = new FileOutputStream("D:\\it\\a.txt");
        byte[] bys={97,98,99,100};
        //写出字节数据
        fos.write(bys);
        //释放资源
        fos.close();
    }

    private static void method() throws IOException {
        //使用字节流写出数据  FileOutputStream  字节输出流
        //构造方法
        //参数: 文件的路径
        //public  FileOutputStream(String name) 创建字节输出流对象
        //public  FileOutputStream(String name,boolean append) 创建字节输出流对象  追加

        FileOutputStream fos = new FileOutputStream("D:\\it\\a.txt",true);
        //调用方法写出数据
        //public void write(int b)
        fos.write(101);
        //释放资源  告诉系统暂时不使用这个文件
        fos.close();
//        while (true){

//        }
    }
}
